Electronic testing equipment, such as integrated circuit or board testers, has become more and more complex over the last decades. This is particularly due to the increased functionality of the circuitry to be tested--e.g., latest microprocessors, RISC CPU's, combined logic/memory IC's --, which calls for complex test procedures and high-sophisticated tester equipment.
There is also another aspect which has become important. Conventional technology provided two basically different groups of testers:
1. Research-oriented testing equipment, i.e., testers which allow easy modification of the test procedure for the purpose of testing individual devices at various different parameters--maximum test speed or throughput is not a concern for this kind of devices, and the focus is rather flexibility and easy access of the parameters to be tested; and
2. Production-oriented testing equipment which is was designed for maximum throughput, i.e., for a maximum number of devices to be tested in a given time frame (the time for testing should not exceed several seconds per device). Easy modification of test procedures was not a design goal for such kind of testing equipment.
However, there is also another difference between research-oriented and production-oriented testers which is of some importance for the present invention. This is the different manner in which the test is performed. Production-oriented testers are commonly designed to perform a test which is called "pass/fail test" (p/f test, sometimes also called "go/nogo test"). That is, a certain specification of the device is tested (say, it is operated at a supply voltage which is 20% lower than the nominal supply voltage), and this test is either passed or fails (it is understood that a multiplicity of similar tests are performed to test proper operation of a device; however, the lower limit of the supply voltage is only tested once, namely at nominal minus 20% voltage).
In contrast, in a research environment, the operator might not only want to know whether the device is operative at said lower limit, but the exact value at which the device fails. That is, in the above example, he would e.g. like to reduce the supply voltage in steps of 1% thereof, and finally find out at which level the device is no longer operative (say, at nominal minus 28% supply voltage, i.e., 72% of the nominal supply voltage). It is understood that this kind of test--often called "value test" in contrast to the "pass/fail test" --requires different test procedures, and is time-consuming, which makes it usually unsuited for use in a production environment.
However, there is still a need to transfer test procedures developed under research conditions one day to a production environment. Furthermore, there is an ongoing demand to use the same tester for research, as well as production purposes; that is, the difference between a research-type tester and a production-type tester is merely the tester program when high-sophisticated tester equipment is used.
Designers of tester equipment are thus faced with conflicting demands, namely to develop procedures suited for fast execution, i.e., designed for pass/fail tests, as well as procedures which permit easy modification and value tests.
One solution to this problem used in the past was to develop two programs simultaneously, namely a value test program for research purposes (herein also called "engineering program"), and a pass/fail test program (also "high-throughput program"), wherein the latter essentially performed the same steps as the engineering program, but did not contain the loops etc. necessary to perform a value test, and was further optimized for high throughput. Both programs commonly used different resources such as preprogrammed utilities, editing or other input means and often even different levels of program language.
The result of this solution was excellent, as the two programs were optimally adapted to their respective purposes. However, it will be understood that this procedure was not only extremely time-consuming and labor-intensive, but also error-prone, just as the complete engineering program had to be "transformed" into the production program manually, and any future modification, change or improvement of the engineering program had likewise to be transformed. Even if only a modification of the production program was required, the engineering program had to be modified first, just for the purpose of keeping the two programs equivalent to each other.
Another drawback of the prior art approach was the time required to transfer the program manually from the engineering level to the production level. It was not only the engineering resources bound by the transfer which annoyed the users of such testers, but also the delay in the production of new devices--as long as they could not be tested, they could not be delivered. Yet another problem was the immense amount of time necessary to debug the coexisting programs.
Yet another serious disadvantage of the known concept was that the "production program" had to be written in a low-level programming language, i.e., a language somewhat close to the functionality of the assigned hardware components. High-level languages, instructions and macros were not suited for this purpose, just because the overhead, and thus the increase in execution time, generally created by such languages.
Thus, there is a need for a testing apparatus of the kind mentioned above which fulfills at least one, but preferably multiple or all of the following characteristics:
a) A single instruction set, or program, should be provided which is suited to perform engineering tests, as well as production tests;
b) the program should be able to perform value tests, as well as pass/fail tests;
c) the program should be fast in the pass/fail mode, but still easy to modify;
d) the program should provide high-level tools, in contrast to the former approach of designing production programs, in order to make programming easier and faster.
The present invention fulfills these needs and provides other related advantages.